function move(obj,attr,targetPoint,speed,callback)
{
    //关闭上一个定时器
    clearInterval(obj.timer);
    //获取元素目前的位置
    var currentPoint=parseInt(getComputedStyle(obj,null)[attr]);
    
    //判断速度的正负值
    //如果从0向800移动，则speed为正
    //如果从800向0移动，则speed为负
    if(currentPoint > targetPoint)//即在目标位置的右边，需要向左移动
    {
        //此时速度为负值
        speed=-speed;
    }
                
    //开启一个定时器，用来执行动画效果
    //向执行动画的对象中添加一个timer属性，用来保存自己的定时器的标识，从而避免出现定时器标识的混用以及停止
    //要注意四尽量不要使用全局变量
    obj.timer=setInterval(function()
    {
        //获取目标box的原来的left值
        var oldValue=parseInt(getComputedStyle(obj,null)[attr]);
        //在旧值的基础上增加
        var newValue=oldValue+speed;
        //判断newValue是否大于800
        //从800向0移动
        //向左移动时，需要判断newValue是否小于targetPoint
        //如果是向左移动，那么speed就是负值
        //向右移动时，需要判断newValue是否大于targetPoint
        if((speed<0 && newValue<targetPoint) || (speed>0 && newValue>targetPoint))
        {
            newValue=targetPoint;
        }
        //将新值设置给box1
        obj.style[attr]=newValue+"px";
        //元素移动到目标点时,使其停止移动动画
        if(newValue == targetPoint)
        {
            clearInterval(obj.timer);
            //动画执行完毕，调用回调函数
            //有时候没传回调函数这个参数，所以需要进一步优化
            callback && callback();
        }
    },30);
}